Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Nova Era de Políticas no Kubernetes: Explorand...

Nova Era de Políticas no Kubernetes: Explorando Abordagens Nativas de Policy Enforcement

Talk feita no KCD (Kubernetes Community Days) São Paulo 2024

Demo: https://github.com/matheusfm/kcd-sp-demo

Matheus Moraes

February 24, 2024
Tweet

More Decks by Matheus Moraes

Other Decks in Technology

Transcript

  1. O que são políticas no Kubernetes? No Kubernetes, políticas são

    configurações que gerenciam outras configurações ou comportamentos de runtime. https://kubernetes.io/docs/concepts/policy/ • NetworkPolicies: restringir o tráfego de um workload • LimitRanges: restringir a alocação de recursos (request/limit) • ResourceQuotas: limitar o consumo de recursos por namespace • * Dynamic Admission Control (webhooks) • * ValidatingAdmissionPolicies
  2. Por que aplicar políticas? • Kubernetes não é seguro por

    padrão • RBAC não é o suficiente • Nem todo mundo é expert nisso
  3. Por que aplicar políticas? Fonte: Red Hat. State of Kubernetes

    security report 2023. Disponível em: https://www.redhat.com/en/resources/state-kubernetes-security-report-2023
  4. Por que aplicar políticas? Fonte: Red Hat. State of Kubernetes

    security report 2023. Disponível em: https://www.redhat.com/en/resources/state-kubernetes-security-report-2023
  5. Exemplos de políticas Boas práticas: • Pods não devem executar

    como usuário root • Workloads devem ter request e limite de memória e CPU • Workloads não devem usar imagens com a tag latest • Pods devem ter readiness e liveness probes configurados Políticas customizadas: • Workloads devem ter as labels “project” e “app” • Workloads devem usar imagens de um registry específico (ex: my-company.com) • Deployments em produção devem ter no mínimo 2 réplicas
  6. Admission webhooks são flexíveis, mas… • Infraestrutura adicional • Latência

    • Dilema failing closed ou failing open (failurePolicy) • Operação ◦ observabilidade ◦ segurança ◦ planos de release/rollout/rollback
  7. ValidatingAdmissionPolicy (KEP-3488) • Alternativa nativa (in-process) aos validating admission webhooks

    • Policy enforcement • Common Expression Language (CEL) para declarar as regras de política • Não suporta mutação Abril 2024 Kubernetes 1.30 v1 (stable) Kubernetes 1.26 v1alpha1 Dezembro 2022 Kubernetes 1.27 v1alpha1 Abril 2023 Kubernetes 1.28 v1beta1 Agosto 2023 Kubernetes 1.29 v1beta1 Dezembro 2023
  8. Dica 1: verifique todos os workloads Dica 2: não esqueça

    dos initContainers Pod .spec Deployment,ReplicaSet,DaemonSet,StatefulSet,Job .spec.template.spec CronJob .spec.jobTemplate.spec.template.spec